package net.xdclass.config;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;


/**
 * 图形验证码配置类
 * @author 小二
 */
@Configuration
public class CaptchaConfig {


    /**
     * 验证码配置类
     * @return
     */
    @Bean
    @Qualifier("captchaProducer")
    public DefaultKaptcha kaptcha() {
        // 创建一个默认的Kaptcha实例
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        // 初始化属性对象
        Properties properties = new Properties();
        // 设置验证码边框
        properties.setProperty(Constants.KAPTCHA_BORDER, "yes");
        // 设置边框颜色
        properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, "220,220,220");
        //properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "38,29,12");
        // 设置验证码图片宽度
        properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, "147");
        // 设置验证码图片高度
        properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, "34");
        // 设置验证码字体大小
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "30");
        //properties.setProperty(Constants.KAPTCHA_SESSION_KEY, "code");
        // 设置验证码个数
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
        // 设置字体间隔
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "12");
        // 设置干扰线颜色
//        properties.setProperty(Constants.KAPTCHA_NOISE_COLOR, "red");
        // 设置干扰实现类
        properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
        // 设置图片样式
        properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple");
        // 设置文字来源
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789abcdefghijklmnopqrstuvwxyz");
        // 创建配置对象
        Config config = new Config(properties);
        // 设置Kaptcha配置
        kaptcha.setConfig(config);
        // 返回配置好的Kaptcha实例
        return kaptcha;
    }
}